package cn.com.surker.system.dao;

import cn.com.surker.system.entity.SysOrigin;
import cn.com.surker.system.entity.SysUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 部门表 Mapper 接口
 * </p>
 *
 * @author lucky
 * @since 2021-02-24
 */
public interface SysOriginDao extends BaseMapper<SysOrigin> {

    /**
     * 查询用户关联的工厂
     * @return
     */
    List<SysOrigin> queryByUidOrigin(Long uid);

	List<SysOrigin> queryByUidOriginV1(Long uid);

    List<SysOrigin> queryByUidAllOrigin(Long uid);
    /**
     * 查询已经管理数据源的公司信息
     * @return
     */
    List<SysOrigin> queryRelationDataOrigin();

    /**
     * 查询开通微信打卡的公司信息
     * @return
     */
    List<SysOrigin> queryGpsOrigin();

    /**
     * 根据dsid查询公司信息
     * @param dsId
     * @return
     */
    SysOrigin queryByDsId(Long dsId);

    /**
     * 根据订阅类型查询订阅部门信息
     * @param type
     * @return
     */
    List<Map<String, Object>> querySubOrigin(Integer type, Long uid);

    /**
     * 查询GPS订阅信息
     * @param type
     * @return
     */
    List<Map<String, Object>> queryGpsSubOrigin(Integer type, Long uid);

    /**
     * 查询关联菜单
     * @param orgId
     * @return
     */
    List<Map<String, Object>> queryMenu(Long orgId);

    /**
     * 保存部门
     * @param origin
     * @return
     */
    Integer saveOrigin(SysOrigin origin);

    /**
     * 查询用户所属工厂
     * @return
     */
    List<Map<String, Object>> queryUserOrigin(Integer type, Integer status);
	List<Map<String, Object>> queryUserOriginV1(Integer type, Integer status);

    /**
     * 查询用户所属工厂
     * @return
     */
    List<Map<String, Object>> queryUserOriginById(Integer type, Integer status, Long uid);

	/**
	 * 查询用户所属公司
	 * @param type
	 * @param status
	 * @param uid
	 * @return
	 */
	List<Map<String, Object>> queryUserCompanyById(Integer type, Integer status, Long uid);

    /**
     * 根据用户ID 部门ID查询部门关联信息
     * @param orgId
     * @param uid
     * @return
     */
    SysOrigin queryByOriginId(Long orgId, Long uid);

    /**
     * 根据数据源ID查询关联公司
     * @param dsId
     * @return
     */
    List<Map<String, Object>> queryOriginByDsId(Long dsId);

	/**
	 * 迭代查询所有站点
	 * @param originIds		代查询的列表
	 * @return
	 */
	List<SysOrigin> queryRelationOrigin(@Param("originIds") List<Long> originIds);

	/**
	 * 查询部门的上级部门（包含本部门，不包含集团）
	 * @param orgId
	 * @return
	 */
	SysOrigin relationParentOrigin(Long orgId);

    /**
     * 根据全称查询公司信息
     * @param fullName
     * @return
     */
	SysOrigin queryByFullName(String fullName);

	/**
	 * 查询用户管理的站点下的部门
	 * @param uid
	 * @param parentOrgId
	 * @return
	 */
	List<SysOrigin> findDepts(Long uid,Long parentOrgId);

	/**
	 * 查询站点名称
	 * @param orgId
	 * @return
	 */
	String queryName(Long orgId);
}
